#!/usr/bin/env bash 
cd $(dirname $0)
main() {
    echo 
    test ! -d debug && mkdir debug 
    comp 
    plot plot.plt&
}

#-------------------------
# 编译并运行
#-------------------------
function comp() {
    local src=$(find -type f -regex ".*\.\(c\|cpp\)")
    local lstr=""
    for i in $src 
    do 
        g++ -std=c++11 -c $i 
        if [[ $i == *".cpp" ]] ; then
            lstr="$lstr $(basename $i .cpp).o"
        elif [[ $i == *".c" ]] ; then
            lstr="$lstr $(basename $i .c).o"
        fi 
    done 
    # echo $lstr 
    local sys=$(CheckSys)
    g++ -std=c++11 $lstr -o mexe
    if [[ $sys == "cygwin" ]] ; then 
        echo "Platform: cygwin"
        mv mexe.exe debug/mexe.exe 
        chmod +x debug/mexe.exe 
        ./debug/mexe.exe
        rm -f *.o 
        return 0
    fi 
    if [[ $sys == "linux" ]] ; then 
        echo "Platform: linux"
        mv mexe debug/mexe 
        chmod +x debug/mexe 
        ./debug/mexe
        rm -f *.o 
        return 0
    fi 
}

#----------------------
#系统检测
#----------------------
function CheckSys() {
    local sys=$(uname -s | tr '[A-Z]' '[a-z]')
    case $sys in 
        *cygwin*) echo "cygwin" ;;
        *linux*) echo "linux"  ;;  
        *) echo "unknow" ;; 
    esac 
}



#---------------------------------------
#自动杀死包含特定字符的进程
#@param1：进程名或者进程关键字
#---------------------------------------
function AutoKill(){
    if [ $# -eq 0 ] ; then   
        return 2
    fi

    local src=$(ps -a | grep $1 | awk '{print $1}') 
    for i in $src 
    do 
        #pid=$(echo "$i" | cut -d' ' -f1)
        kill -9 $i  
        local status=$?
        if [ $status -eq 0 ] ; then 
            echo "[log] 发现 '$i' 进程, 已经杀死该进程!"
        else
            echo "[log] 发现 '$i' 进程, 杀死该进程失败!"
            return 2
        fi 
        return 0
    done      
}

#-----------------------------------
# 调用GNUPLOT绘图，首先检测是否有相应应用
#开启，开启则先杀死进程
#-----------------------------------
function plot(){
    AutoKill gnuplot
    chmod +x $1 
    ./$1 &
    echo "[log] 开启新的 gnuplot 进程"
}

main $*  